home *** CD-ROM | disk | FTP | other *** search
/ HyperLib 1997 Winter - Disc 1 / HYPERLIB-1997-Winter-CD1.ISO.7z / HYPERLIB-1997-Winter-CD1.ISO / オンラインウェア / UTIL / Folder・Icon・Opener 1.0.1.sit / Folder•Icon•Opener 1.0.1 / source code / sources / FIOpen.menu.c < prev    next >
Text File  |  1996-05-05  |  5KB  |  222 lines

  1. /*
  2.  *--------------------------------------------------------------
  3.  * FIOpen.menu.c
  4.  *--------------------------------------------------------------
  5.  *    Copyright ゥ Fumio Rokkaku, 1996
  6.  *--------------------------------------------------------------
  7.  */
  8. #pragma once
  9.  
  10. /* System Headers */
  11. #include <Memory.h>
  12. #include <QuickDraw.h>
  13. #include <Menus.h>
  14. #include <Windows.h>
  15. #include <Dialogs.h>
  16. #include <Desk.h>
  17. #include <OSUtils.h>
  18. #include <Events.h>
  19. #include <StandardFile.h>
  20.  
  21. /* Project Headers */
  22. #include "FIOpen.h"
  23.  
  24. /* constant definitions */
  25. enum constMenuIDs {
  26.     kMenuBarID    = kBaseID,
  27.     mAppleID    = kBaseID,
  28.     mFileID,
  29.     mEditID
  30. };
  31. enum constMenuItems {
  32.     miAboutMe    = 1,
  33.     miFileOpen    = 1,
  34.     miFileClose    = 2,
  35.     miFileQuit    = 4
  36. };
  37.  
  38. /*
  39.  *--------------------------------------------------------------
  40.  *    static functions only used in this source
  41.  *--------------------------------------------------------------
  42.  */
  43. static void DoAppleMenu(const short);
  44. static void DoFileMenu(const short);
  45. static void DoEditMenu(const short);
  46. static Boolean EnabeMyMItem(MenuRef, short, Boolean);
  47.  
  48. /*
  49.  *--------------------------------------------------------------
  50.  *    macro
  51.  *--------------------------------------------------------------
  52.  */
  53. Boolean    IsEnabled(MenuRef, const short);
  54. #define IsEnabled(mH, item)    ((**mH).enableFlags & (1 << item))
  55.  
  56. /*
  57.  *--------------------------------------------------------------
  58.  * SetUpMyMenus
  59.  *--------------------------------------------------------------
  60.  *    build up menus
  61.  *--------------------------------------------------------------
  62.  */
  63. Boolean SetUpMyMenus(void)
  64. {
  65.     Handle    aMenuBar;
  66.  
  67.     aMenuBar = GetNewMBar(kBaseID);
  68.     if (aMenuBar != nil) {
  69.         /* set menus in menu bar */
  70.         SetMenuBar(aMenuBar);
  71.         DisposeHandle(aMenuBar);
  72.     
  73.         /* set DeskAccesories */
  74.         AppendResMenu(GetMenuHandle(mAppleID), 'DRVR');
  75.         DrawMenuBar();
  76.     
  77.         return (true);
  78.     }
  79.     return (false);
  80. }
  81. /*
  82.  *--------------------------------------------------------------
  83.  * DoMenus
  84.  *--------------------------------------------------------------
  85.  *    Handle the menu selection. menuSelect is what MenuSelect() 
  86.  *    and MenuKey() return: the high word is the menu ID,
  87.  *    the low word is the menu item
  88.  *--------------------------------------------------------------
  89.  */
  90. void DoMenus(const long menuSelect)
  91. {
  92.     short    menuID  = HiWord(menuSelect);
  93.     short    menuItm = LoWord(menuSelect);
  94.  
  95.     switch (menuID) {
  96.     case mAppleID:    DoAppleMenu(menuItm);    break;
  97.     case mFileID:    DoFileMenu(menuItm);    break;
  98.     case mEditID:
  99.         if (SystemEdit(menuItm -1) == false) {
  100.             DoEditMenu(menuItm);
  101.         }
  102.         break;
  103.     }
  104.     HiliteMenu(0);
  105. }
  106. /*
  107.  *--------------------------------------------------------------
  108.  *    DoAppleMenu
  109.  *--------------------------------------------------------------
  110.  *    handle Apple menu item
  111.  *--------------------------------------------------------------
  112.  */
  113. static void DoAppleMenu(const short theItem)
  114. {
  115.     switch (theItem) {
  116.     case miAboutMe:
  117.         OpenAboutDialog();
  118.         break;
  119.     default:
  120.         {    /* Desk Accessories */
  121.             GrafPtr    savePort;
  122.             Str255    aDAName;
  123.  
  124.             GetPort(&savePort);
  125.             GetMenuItemText(GetMenuHandle(mAppleID), theItem, aDAName);
  126.             OpenDeskAcc(aDAName);
  127.             SetPort(savePort);
  128.         }
  129.         break;
  130.     }    
  131. }
  132. /*
  133.  *--------------------------------------------------------------
  134.  *    DoFileMenu
  135.  *--------------------------------------------------------------
  136.  *    handle file menu item
  137.  *--------------------------------------------------------------
  138.  */
  139. static void DoFileMenu(const short theItem)
  140. {
  141.     switch (theItem) {
  142.     case miFileOpen:
  143.         {
  144.             StandardFileReply    aReply;
  145.  
  146.             CustomGetFolderOnly(&aReply);
  147.             if (aReply.sfGood) {
  148.                 OpenFolderIcon(&aReply.sfFile);
  149.             }
  150.         }
  151.         break;
  152.     case miFileClose:
  153.         if (GetWRefCon(FrontWindow()) == kAboutType) {
  154.             CloseAboutDialog();
  155.         }
  156.         break;
  157.     case miFileQuit:
  158.         gDone = true;
  159.         break;
  160.     }
  161. }
  162. /*
  163.  *--------------------------------------------------------------
  164.  *    DoEditMenu
  165.  *--------------------------------------------------------------
  166.  *    handle edit text item
  167.  *--------------------------------------------------------------
  168.  */
  169. static void DoEditMenu(const short theItem)
  170. {
  171. #pragma unused (theItem)
  172. }
  173. /*
  174. /*
  175.  *--------------------------------------------------------------
  176.  * AdjustMyMenus
  177.  *--------------------------------------------------------------
  178.  */
  179. void AdjustMyMenus(void)
  180. {
  181.     MenuRef        aMenu;
  182.     Boolean        nowAbout = IsAboutDialog();
  183.     Boolean        redraw = false;
  184.  
  185.     /* maitain Apple menu */
  186.     aMenu = GetMenuHandle(mAppleID);
  187.     redraw |= EnabeMyMItem(aMenu, miAboutMe, !nowAbout);
  188.  
  189.     /* maitain File menu */
  190.     aMenu = GetMenuHandle(mFileID);
  191.     redraw |= EnabeMyMItem(aMenu, miFileClose, nowAbout);
  192.  
  193.     /* maitain Edit menu */
  194.     aMenu = GetMenuHandle(mEditID);
  195.     redraw |= EnabeMyMItem(aMenu, 0, false);
  196.  
  197.     if (redraw) {
  198.         /* draw menu bar if needed */
  199.         DrawMenuBar();
  200.     }
  201. }
  202. /*
  203.  *--------------------------------------------------------------
  204.  * EnabeMyMItem
  205.  *--------------------------------------------------------------
  206.  *    enable or disable menu item according to the conditon
  207.  *--------------------------------------------------------------
  208.  */
  209. static Boolean EnabeMyMItem(MenuRef theMenu, short item, Boolean activate)
  210. {
  211.     Boolean    redraw;
  212.  
  213.     if (activate) {
  214.         redraw = (IsEnabled(theMenu, item)) ? false : true;
  215.         EnableItem(theMenu, item);
  216.     } else {
  217.         redraw = (IsEnabled(theMenu, item)) ? true : false;
  218.         DisableItem(theMenu, item);
  219.     }
  220.     return (redraw);
  221. }
  222.